package hadoopdemo;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class Testhdfs {
	public static void main(String[] args) throws Exception {
	 
		//HDFS -- JavaAPI 
		
		Configuration conf = new Configuration();
		
		URI uri = new URI("hdfs://192.168.52.100:8020");
		
		FileSystem fileSystem = FileSystem.get(uri, conf);
		
		//fileSystem 对象
		System.out.println(fileSystem);
		
		//HDFS  创建文件夹
		
//		Path newPath = new Path("/newDir");
//		fileSystem.mkdirs(newPath );
		
		//上传文件
		//本地    C:\hdfs\a.txt    --- 》HDFS   ： /newDir/
		
		//fileSystem.copyFromLocalFile(new Path("file:///C:/hdfs/b.txt"), new Path("/newDir/"));
		
		
		//下载文件
//		fileSystem.copyToLocalFile(src, dst);
		
	
		
		//列出文件和文件夹列表:把当前指定HDFS的路径下的文件或文件夹（包含子目录）名称列出来
		listFiles(fileSystem,new Path("/user"));
		
		// 案例1:
		// hdfs上 定期清理，把指定位置文件大小满足条件的删除掉（=0， < 10 字节）
		
		// 案例2： 查找文件（条件？ 根据文件名，在指定的hdfs位置下，找该文件，
		// 如果找到返回该文件，否则返回null
	}

	private static void listFiles(FileSystem fileSystem, Path path) throws Exception {
		FileStatus[] listStatus = fileSystem.listStatus(path);
		for (FileStatus file : listStatus) {
			if(file.isDirectory()) {
				Path newPath = file.getPath();
				listFiles(fileSystem, newPath);
			}else {
				System.out.println(file.getPath().toString());
			}
		}
	}
}
